কাস্টম ডাটাটাইপ তৈরি করা

Database Tutorials - এইচ২ ডাটাবেস (H2 Database) H2 Database এর কাস্টম ডাটাটাইপ এবং ফাংশনস |
214
214

কাস্টম ডাটাটাইপ তৈরি করার প্রক্রিয়া এমন একটি ডাটাটাইপ তৈরি করা যা ডেটাবেসে ব্যবহারকারীর প্রয়োজন অনুযায়ী কাস্টম বৈশিষ্ট্য সহ থাকে। এটি সাধারণত Java প্রোগ্রামিং বা SQL ডেটাবেস ব্যবহারের ক্ষেত্রে করা হয়, যেখানে আপনি ডাটাবেসে সংরক্ষিত তথ্যের জন্য নতুন ধরনের ডেটা তৈরি করতে চান। কাস্টম ডাটাটাইপ ডেটাবেসে নতুন বৈশিষ্ট্য যুক্ত করতে, তথ্যের ফর্ম্যাট কাস্টমাইজ করতে এবং সিস্টেমের পারফরম্যান্স বা ব্যবহারিক কাজের জন্য আরও বেশি উপযোগী করে তোলে।

Hibernate এর সাথে কাস্টম ডাটাটাইপ তৈরি

Hibernate ORM ব্যবহার করার সময় আপনি custom data type তৈরি করতে পারেন যাতে কিছু প্রক্রিয়া বা নিয়ম অনুসারে ডেটা সংরক্ষণ করা যায়। সাধারণত Hibernate-এ @Type অ্যানোটেশন ব্যবহার করে কাস্টম ডাটাটাইপ তৈরি করা হয়।

এখানে আমরা Hibernate এবং Java ক্লাসের মাধ্যমে কাস্টম ডাটাটাইপ তৈরি করার উদাহরণ দেখবো।


১. Java ক্লাসে কাস্টম ডাটাটাইপ তৈরি

ধরা যাক, আপনি একটি CustomDate ক্লাস তৈরি করতে চান, যা Java Date এবং ডেটাবেসের মধ্যে সংরক্ষণ করতে কাস্টম ফরম্যাটে থাকবে।

CustomDate ক্লাস তৈরি করা

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;

public class CustomDate implements Serializable {
    private Date date;

    public CustomDate(Date date) {
        this.date = date;
    }

    public String toString() {
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
        return sdf.format(date);
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }
}

এই CustomDate ক্লাসটি Date অবজেক্টকে কাস্টম ফরম্যাটে (যেমন dd-MM-yyyy) রূপান্তরিত করে একটি স্ট্রিং হিসেবে প্রদান করবে।

CustomDate Hibernate টাইপ তৈরি করা

এখন আপনাকে Hibernate-এর জন্য একটি কাস্টম টাইপ ক্লাস তৈরি করতে হবে যা CustomDate টাইপকে সঠিকভাবে হ্যান্ডেল করবে।

import org.hibernate.type.AbstractSingleColumnStandardBasicType;
import org.hibernate.type.descriptor.sql.SqlTypeDescriptor;
import org.hibernate.type.descriptor.sql.VarcharTypeDescriptor;

public class CustomDateType extends AbstractSingleColumnStandardBasicType<CustomDate> {

    public static final CustomDateType INSTANCE = new CustomDateType();

    public CustomDateType() {
        super(VarcharTypeDescriptor.INSTANCE, CustomDateTypeDescriptor.INSTANCE);
    }

    @Override
    public String getName() {
        return "customDate";
    }
}

এখানে:

  • CustomDateType Hibernate-এ CustomDate টাইপকে সঠিকভাবে স্টোর এবং রিট্রিভ করার জন্য VarcharTypeDescriptor এবং CustomDateTypeDescriptor ব্যবহার করে।
  • CustomDateTypeDescriptor.INSTANCE ব্যবহার করে CustomDate টাইপের সঠিক মান সংরক্ষণ এবং পুনরুদ্ধার করার জন্য কাস্টম লজিক তৈরি করা যায়।

২. Hibernate Entity ক্লাসে কাস্টম ডাটাটাইপ ব্যবহার

এখন আপনার Hibernate Entity ক্লাসে এই কাস্টম টাইপটি ব্যবহার করতে হবে। এই জন্য @Type অ্যানোটেশন ব্যবহার করতে হবে।

Entity ক্লাসে CustomDate টাইপ ব্যবহার করা

import org.hibernate.annotations.Type;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class User {

    @Id
    private int id;

    private String name;

    @Type(type = "customDate")
    private CustomDate dateOfBirth;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public CustomDate getDateOfBirth() {
        return dateOfBirth;
    }

    public void setDateOfBirth(CustomDate dateOfBirth) {
        this.dateOfBirth = dateOfBirth;
    }
}

এখানে:

  • @Type অ্যানোটেশন ব্যবহার করে আমরা CustomDate টাইপকে Hibernate Entity-এ যুক্ত করেছি।
  • Hibernate এই কাস্টম ডাটাটাইপের জন্য CustomDateType ক্লাসটিকে ব্যবহার করবে এবং ডেটাবেসে ডেটা সংরক্ষণের সময় এই কাস্টম ফরম্যাটে ডেটা ইনসার্ট করবে।

৩. Hibernate Configuration এবং Session Factory

Hibernate কনফিগারেশন ফাইলে আপনাকে কাস্টম টাইপটি রেজিস্টার করতে হবে।

hibernate.cfg.xml কনফিগারেশন

<hibernate-configuration>
    <session-factory>
        <!-- Other Hibernate properties -->
        <property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
        <property name="hibernate.connection.driver_class">org.h2.Driver</property>
        <property name="hibernate.connection.url">jdbc:h2:~/test;AUTO_SERVER=TRUE</property>
        <property name="hibernate.connection.username">sa</property>
        <property name="hibernate.connection.password"></property>

        <!-- Register custom Hibernate type -->
        <mapping class="com.example.User"/>
    </session-factory>
</hibernate-configuration>

৪. ডেটাবেসে ডেটা ইনসার্ট এবং রিট্রিভ করা

এখন আপনার User ক্লাসে CustomDate টাইপটি ব্যবহার করতে পারবেন, এবং এটি Hibernate স্বয়ংক্রিয়ভাবে ডেটাবেসে custom format হিসেবে সংরক্ষণ করবে।

Session ব্যবহার করে ডেটা ইনসার্ট করা

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import java.util.Date;

public class Main {
    public static void main(String[] args) {
        // Hibernate session initialization
        SessionFactory factory = new Configuration()
                .configure("hibernate.cfg.xml")
                .addAnnotatedClass(User.class)
                .buildSessionFactory();

        Session session = factory.getCurrentSession();

        try {
            // Create a User object
            User user = new User();
            user.setId(1);
            user.setName("John Doe");
            user.setDateOfBirth(new CustomDate(new Date()));

            // Start a transaction
            session.beginTransaction();

            // Save the User object
            session.save(user);

            // Commit the transaction
            session.getTransaction().commit();
        } finally {
            factory.close();
        }
    }
}

এখন CustomDate টাইপটি Hibernate দ্বারা ডেটাবেসে সঠিক ফরম্যাটে সংরক্ষণ হবে। CustomDate এর toString() মেথড অনুযায়ী ডেটা স্ট্রিং ফরম্যাটে ডেটাবেসে ইনসার্ট হবে।


সারাংশ

Hibernate এর সাথে কাস্টম ডাটাটাইপ তৈরি করা একটি শক্তিশালী এবং কার্যকরী প্রক্রিয়া, যা আপনাকে Java ক্লাসে নির্দিষ্ট ধরনের ডেটা সংরক্ষণ এবং প্রক্রিয়া করতে সহায়ক করে। কাস্টম ডাটাটাইপ তৈরি করতে আপনাকে:

  1. Java ক্লাস তৈরি করতে হবে,
  2. Hibernate Type কাস্টম ক্লাস তৈরি করতে হবে,
  3. Entity ক্লাসে @Type অ্যানোটেশন ব্যবহার করতে হবে।

এই প্রক্রিয়া আপনাকে ডেটাবেসের কাঠামোতে কাস্টম ডেটা ফরম্যাট সংরক্ষণ করার সুযোগ দেয় এবং উন্নত কার্যক্ষমতা প্রদান করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion